<?php
class AjaxController extends AppController {

    var $name = 'Ajax';
    var $uses = array('Sign','Problems','Vademecum','AdjuntosTmp','Clients','Insurance','InsurancesPerson','InsurancesUser','Person');
    var $components = array('RequestHandler');


    function beforeFilter () {
        parent::beforeFilter();
		$this->Auth->allow('obtiene_provincias_clientes','obtiene_localidad_clientes');
    }


    function index() {

    }
	
    function busca_cliente() {
		$this->layout = 'ajax';
		$this->autoRender=false;
		
		$text = trim($_GET['q']);
		if (!empty($text)) {
			// Obtengo todos los Clientes que coinciden con los criterios de busqueda
			$options   = array('conditions' => array('Clients.name LIKE' => "%$text%"), 'limit' => 20);
			$resultado = $this->Clients->find('all',$options);
			if ($resultado){
				foreach($resultado as $r){
					echo "{$r['Clients']['name']}|{$r['Clients']['id']}\n";
				}
			}
		}
	}
	
	
    function listado_problemas() {
		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = trim($_GET['q']);
		if (!empty($text)) {
			$resultado = json_decode($this->requestAction('/problems/obtenerDatossolr/'.$text), true);

//var_dump($resultado);
//exit;
			if (!empty($resultado)) {


				$contador = 0;
				foreach($resultado as $r) {
					$contador++;
					if($contador != 1){ echo ',';}
					echo '{"name": "'.$r['name'].'","id": "'.$r['id'].'"}';
				}
			}
		}
	}


    function listado_practicas() {
		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = trim($_GET['q']);
		if (!empty($text)) {
			// Obtengo todos los Problemas desde el Solr
			$resultado = json_decode($this->requestAction('/practices/obtenerDatossolr/'.$text), true);

			if (!empty($resultado)) {

				$contador = 0;
				foreach($resultado as $r) {
					$contador++;
					if($contador != 1){ echo ',';}
					echo '{"name": "'.$r['name'].'","id": "'.$r['id'].'"}';
				}
			}

	
		}
	}
	
    function listado_medicamentos() {
		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = trim($_GET['q']);
		$vademecum = trim($_GET['vademecum']);
		if(empty($vademecum)){ $vademecum = 'vademecums'; }
		
		//$VademecumsCliente = $this->Session->read('VademecumsCliente');
		//pr($VademecumsCliente);
		
		
		if (!empty($text)) {
			// Obtengo todos los Medicamentos desde el Solr
			//$resultado = json_decode($this->requestAction('/vademecums/obtenerDatossolr/'.$text));
			$resultado = $this->requestAction("/vademecums/obtenerDatossolr/$text/false/$vademecum");			
			//pr($resultado);
			
			if ($resultado) {
				$contador = 0;
				foreach($resultado as $r) {
					$contador++;
					if($contador != 1){ echo ',';}
					$nombre = trim($r['vademecum']['name']).', '.trim($r['vademecum']['presentacion']);
					echo '{"name": "'.$nombre.'","id": "'.$r['vademecum']['id'].'"}';
				}
			}
			/*
			if ($resultado->response->docs) {
				$contador = 0;
				foreach($resultado->response->docs as $r) {
					$contador++;
					if($contador != 1){ echo ',';}
					echo '{"name": "'.$r->name.' '.$r->presentacion.'","id": "'.$r->id.'"}';
				}
			}
			*/

		}
	}
	
    function listado_medicamentos_parenteral() {
		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = "%".trim($_GET['q'])."%";
		if (!empty($text)) {
			// Traigo la unidad indicada
			$this->loadModel('Vademecumparental');
			$Resultado = $this->Vademecumparental->find('all', array( 
																'order' => array('Vademecumparental.name'), 
																'conditions' => array( 'Vademecumparental.name LIKE ' => $text)
															)) ;
			if ($Resultado) {
				$contador = 0;
				foreach($Resultado as $r) {
					$contador++;
					if($contador != 1){ echo ',';}
					echo '{"name": "'.$r['Vademecumparental']['name'].'","id": "'.$r['Vademecumparental']['id'].'"}';
				}
			}
		}
	}
	
    function uploadfile($key_attach='') {
		$this->layout = 'ajax';

		$this->set('key_attach', $key_attach);
		
		$DestinoTemporal = ROOT.DS.APP_DIR.DS."webroot".DS."files".DS."temp".DS;

		$paciente_id = $_SESSION['paciente_id'];

		if (!empty($_FILES['archivo']) and $_FILES['archivo']['error']==0 and $_FILES['archivo']['size']>0 and !empty($_POST['nombre']) ) {

			$adjunto    = $_FILES['archivo'];
			$nombre     = $_POST['nombre'];
			$comentario = $_POST['comentario'];
			
			$nombre_nuevo = $key_attach.'_'.time().'.'.end(explode('.',$adjunto['name']));
			$ruta_nueva   = $DestinoTemporal.''.$nombre_nuevo;
		
			
			if (!move_uploaded_file($adjunto['tmp_name'], "$ruta_nueva")) {
				echo "<hr>ERROR al subir el archivo<HR>";
			} else {
			
					$this->AdjuntosTmp->create();
					$this->AdjuntosTmp->set(array(
						'id'         => 0,
						'user_id'    => $this->Auth->user('id'),
						'person_id'  => $paciente_id,
						'client_id'  => $this->Session->read('ClientesUsuarioLogueado.id'),
						'nombre'     => $nombre,
						'comentario' => $comentario,
						'adjunto'    => $nombre_nuevo,
						'size'		 => $adjunto['size'],
						'fecha'      => date("Y-m-d H:i"),
						'key_attach' => $key_attach
					));
					$this->AdjuntosTmp->save();
				
			
			}

			
		} 

		$adjuntos = $this->AdjuntosTmp->find('all', array(
														'conditions' => array('AdjuntosTmp.key_attach' => $key_attach)
														));
			
		$this->set('adjuntos', $adjuntos);
		
		
	}
	
	
	
    function deletefile($key_attach='',$adjunto_id=0) {
		$this->layout = 'ajax';

		if ($adjunto_id >0){
		
			$this->AdjuntosTmp->delete($adjunto_id);
		
		}
		
		$this->redirect('/ajax/uploadfile/'.$key_attach);
		
		

	}
	
	

//-----------------------------------------------------------------------------------------------------------------------------------------
//                                                Buscar Precio Grilla -> Para el evolucionador (/views/elements/evolution_financiador.ctp)
//-----------------------------------------------------------------------------------------------------------------------------------------
	function buscar_precio_grilla($financiador_id='0', $producto_id=0, $plan='', $producto=''){

		$this->layout = 'ajax';
		$this->autoRender=false;

		if(!empty($plan)) {
			$x    = explode('-',$plan);
			$plan = strtoupper(trim(end($x)));
			$os_name = $x[0];
		}
		//echo $plan;
		if ($financiador_id=='0' or $producto_id==0) { 
			// Alguno de los valores es nulo
			echo "<span class='etiquetas_tags fdo_rojo'>Debe seleccionar un producto y un financiador</span>";

		} else {

			if ($financiador_id=='crear'){
				$insurances = $this->Insurance->find('list', array('fields' => array('Insurance.id','Insurance.name'),
																	'order' => array('Insurance.name' => 'ASC') ));
				
				//$select_os ="Seleccione el Financiador, indique el Plan, Nro.de Afiliado e importe para ese producto.<br>";
				$select_os ="";
				$select_os.="<table><tr><td>";
				$select_os.=  "Financiador:<br/><select id='h_insurance_id' style='width:200px;font-size: 100%;'> ";
				foreach ($insurances as $key => $value) {
					$select_os.= "<option value='$key' >".substr($value,0,50)."</option>";
				}
				$select_os.="</select></td>";
				$select_os.="<td style='padding-left: 15px;'>Plan:<br/><input type='text' id='h_plan' value='' style='width:150px;font-size: 100%;' ></td>";
				$select_os.="</tr><tr>";				
				$select_os.="<td>Nro.Afiliado:<br/><input type='text' id='h_afiliado' value='' style='width:150px;font-size: 100%;' ></td>";
				$select_os.="<td style='padding-left: 15px;'>Importe:<br/><input type='text' id='h_importe' value='0.00' style='width:50px;text-align:right;font-size: 100%;'></td>";
				$select_os.="</tr></table>";
				$select_os.="<input type='hidden' id='actualiza' value='crea'><input type='hidden' id='h_moneda_id' value='1' >";
				echo $select_os;


			} else {

				// Traigo las OS del medico
				$id_user = $this->Session->read('Auth.User.id');
				$this->loadModel('InsurancesUser');
				$financiadores = $this->InsurancesUser->find('first', array(
								'conditions' => array(
													'InsurancesUser.client_id'    => $this->Session->read('ClientesUsuarioLogueado.id'),
													'InsurancesUser.user_id'      => $id_user,
													'InsurancesUser.insurance_id' => $financiador_id,
													"InsurancesUser.plan"         => $plan,
												)
									) );
				//pr($financiadores);
				if (empty($financiadores)){
					//-----------------------------------------------------------------------------------------------------	
					//                             El medico no tiene esa obra social en su lista
					//-----------------------------------------------------------------------------------------------------
					// Busco algun producto del medico para saber la moneda	
					$this->loadModel('InsurancesProduct');
					$grilla = $this->InsurancesProduct->find('first', array(
									'conditions' => array(
														'InsurancesProduct.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														'InsurancesProduct.user_id'   => $id_user,
													)
										) );
					if ($grilla){
						$this->loadModel('Money');
						$moneda = $this->Money->find('first', array(
										'conditions' => array(
															'Money.id' => $grilla['InsurancesProduct']['money_id']
														)
											) );
						$select_moneda='';

					} else {
						// La grilla esta vacia, arma select de moneda
						/******************************************************************************/
						/*                                                            Tipos de Moneda */
						/******************************************************************************/
						$this->loadModel('Money');
						$monedas = $this->Money->find('all');
						$this->set('Monedas', $monedas);		
						$select_moneda = "Moneda: <select name='data[moneda]' id='h_moneda_id'>";
							foreach($Monedas as $moneda){ 
								$select_moneda.="<option value='{$moneda['Money']['id']}'>{$moneda['Money']['name']} [{$moneda['Money']['simbolo']}]</option>";
							} // end foreach $Monedas 
						$select_moneda.="</select>";

					}

					if(empty($select_moneda)){
						echo $moneda['Money']['simbolo'];
						echo "<input type='hidden' id='h_moneda_id' value='{$grilla['InsurancesProduct']['money_id']}' >";
					} else {
						echo $select_moneda;
					}

					echo "<input type='text' value='0.00' id='h_importe' style='width:50px;text-align:right;'>
							Este Financiador / Plan, se agregará a su grilla de financiadores.
						";
							 
					echo "	<input type='hidden' id='h_product_id' value='$producto_id' >
							<input type='hidden' id='h_insurance_id' value='$financiador_id' >
							<input type='hidden' id='h_plan' value='$plan' >
							<input type='hidden' id='h_producto' value='$producto' >
							<input type='hidden' id='h_os_name' value='$os_name' >
							<input type='hidden' id='h_insurance_user_id' value='0' >
							<input type='hidden' id='actualiza' value='0'> 
							";

				} else {

					//-----------------------------------------------------------------------------------------------------	
					//                             Busco los valores de grilla para esa OS/Producto
					//-----------------------------------------------------------------------------------------------------

					$insurance_user_id = $financiadores['InsurancesUser']['id'];

					$this->loadModel('InsurancesProduct');
					$grilla = $this->InsurancesProduct->find('first', array(
									'conditions' => array(
														'InsurancesProduct.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
														'InsurancesProduct.user_id'   => $id_user,
														'InsurancesProduct.insurance_user_id' => $insurance_user_id,
														'InsurancesProduct.product_id' => $producto_id,
													)

										) );
					$this->loadModel('Money');
					$moneda = $this->Money->find('first', array(
									'conditions' => array(
														'Money.id' => $grilla['InsurancesProduct']['money_id']
													)
										) );

					echo "{$moneda['Money']['simbolo']}
						  <input type='text' value='{$grilla['InsurancesProduct']['importe']}' id='h_importe' style='width:50px; text-align:right;'  disabled='disabled'>
						  <input type='checkbox' id='check_actualizar' style='width:13px;'> Modificar Importe y Actualizar mi Grilla
							<input type='hidden' id='h_product_id' value='$producto_id' >
							<input type='hidden' id='h_moneda_id' value='{$grilla['InsurancesProduct']['money_id']}' >
							<input type='hidden' id='h_insurance_id' value='$financiador_id' >
							<input type='hidden' id='h_plan' value='$plan' >
							<input type='hidden' id='h_producto' value='$producto' >						
							<input type='hidden' id='h_os_name' value='$os_name' >
							<input type='hidden' id='h_insurance_user_id' value='$insurance_user_id' >
							<input type='hidden' id='actualiza' value='0'> 

							<script>
								jQuery('#check_actualizar').click(function() {
		   							if (this.checked) {
									    jQuery('#h_importe').removeAttr('disabled');
									    jQuery('#actualiza').val('1');
									  } else {
									    jQuery('#h_importe').val('{$grilla['InsurancesProduct']['importe']}');
									    jQuery('#h_importe').attr('disabled', true);
									    jQuery('#actualiza').val('0');
									  }
								});
							</script>";

				} // end if empty $financiadores



			} // end if product_id=='crear'



		} // end if($financiador_id==0 or $producto_id==0)


	} //end function buscar_precio_grilla
	



    function obtiene_planes_os() {
    	// autocomplete en /views/people/edit.ctp

		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = trim($_GET['q']);
		if (!empty($text)) {

			$options   = array('conditions' => array('InsurancesPerson.nombre_plan LIKE' => "%$text%"), 'group' => 'InsurancesPerson.nombre_plan', 'limit' => 20);
			$resultado1 = $this->InsurancesPerson->find('all',$options);

			$options   = array('conditions' => array('InsurancesUser.plan LIKE' => "%$text%"), 'limit' => 20);
			$resultado2 = $this->InsurancesUser->find('all',$options);

			if ($resultado1){
				foreach($resultado1 as $r){
					$plan = strtoupper(trim($r['InsurancesPerson']['nombre_plan']));
					echo "$plan|$plan\n";
					
					if($resultado2){
						foreach ($resultado2 as $key => $value) {
							if(strtoupper(trim($value['InsurancesUser']['plan'])) == $plan){
								unset($resultado2[$key]);
							}
						}
					}
				}
			}

			if ($resultado2){
				foreach($resultado2 as $r){
					$plan = strtoupper(trim($r['InsurancesUser']['plan']));
					echo "$plan|$plan\n";
				}
			}

		}
	}



    function obtiene_provincias_clientes() {
    	// autocomplete en /views/clients/edit.ctp

		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = trim($_GET['q']);
		
		if (!empty($text)) {

			$options   = array('conditions' => array('Clients.provincia LIKE' => "%$text%"), 'limit' => 20, 'group' => 'Clients.provincia');
			$resultado1 = $this->Clients->find('all',$options);

			if ($resultado1){
				foreach($resultado1 as $r){
					$plan = strtoupper(trim($r['Clients']['provincia']));
					echo "$plan|$plan\n";
					
				} // endoforeach

			} // endif isset resultado1

		} // endif !empty $text

	} // end function


    function obtiene_localidad_clientes() {
    	// autocomplete en /views/clients/edit.ctp

		$this->layout = 'ajax';
		$this->autoRender=false;

		$text = trim($_GET['q']);
		
		if (!empty($text)) {

			$options   = array('conditions' => array('Clients.localidad LIKE' => "%$text%"), 'limit' => 20, 'group' => 'Clients.localidad');
			$resultado1 = $this->Clients->find('all',$options);

			if ($resultado1){
				foreach($resultado1 as $r){
					$plan = strtoupper(trim($r['Clients']['localidad']));
					echo "$plan|$plan\n";
					
				} // endoforeach

			} // endif isset resultado1

		} // endif !empty $text

	} // end function


    function obtiene_pacientes() {

		$this->layout = 'ajax';
		$this->autoRender=false;
		$client_id    = $this->Session->read('ClientesUsuarioLogueado.id');

		$q = trim($_GET['term']);

		if ( !empty($q) ) {
				$sql = "SELECT p.id, p.lastname,p.name, g.name AS gender, t.name AS tipodoc, p.nro_documento, p.fecha_nacimiento, ip.nro_afiliado
						FROM insurances_people AS ip
						LEFT JOIN people AS p ON ip.person_id = p.id
						LEFT JOIN genders AS g ON p.gender_id=g.id
						LEFT JOIN clients_people AS cp ON cp.person_id=p.id
						LEFT JOIN typodocuments AS t ON p.typodocument_id=t.id
						WHERE cp.client_id='$client_id' 
							AND ( p.name REGEXP '$q' OR p.lastname REGEXP '$q'  OR p.nro_documento REGEXP '$q'  OR ip.nro_afiliado REGEXP '$q' )
						GROUP BY ip.id ORDER BY lastname ASC LIMIT 20";

				$resultado = $this->Person->query($sql);		


			if ($resultado){
				$items=array();
				foreach($resultado as $r){	
					$edad    = $this->calcular_edad($r['p']['fecha_nacimiento']);
					$id      = $r['p']['id'];
					$nombre  = substr($r['g']['gender'],0,1).' - '.strtoupper(trim($r['p']['lastname'])).', '.strtoupper(trim($r['p']['name'])).' - '.$r['t']['tipodoc'].': '.$r['p']['nro_documento'].' - Edad:'.$edad.' - Cred:'.$r['ip']['nro_afiliado'] ;
					$items[] = '{ '.'"id": "'.$id.'", '.'"label": "'.$nombre.'" }';
				} // endoforeach
				$json = "[ " . implode( ", ", $items ) . " ]";

				echo $json;

			}

		} // endif !empty $text

	} // end function



	function calcular_edad($fecha_nacimiento){
		list($ano,$mes,$dia) = explode('-', $fecha_nacimiento);
		$f_nac = mktime(0,0,0,$mes,$dia,$ano);
		$edad = (int)((time()-$f_nac)/31556926 );
		return $edad;
	}
		

}
?>
